package DDE.FIFO;

public class FiFo {

	private int[]file;
	private int in;
	private int out;
	private int nbelt;

	//On crée le tableau et initialise les variables
	FiFo (int taille){
		file = new int [taille];
		in = out = nbelt =0;
	}
	
	//On teste si la file est vide
	boolean estVide(){
		return nbelt == 0;
	}
	
	//On teste si la file est pleine
	boolean estPleine(){
		return nbelt == file.length;
	}
	
	//On entre une valeur dans la file
	void entrer (int e){
		if (!this.estPleine()){
			file [in] = e;
			in ++;
			nbelt++;
			if (in == file.length){
				in = 0;
			}
		}
		else System.out.println ("File pleine");
	}
	
	//On sort une valeur de la file
	void sortir (){
		if (!this.estVide()){
			out ++;
			nbelt--;
			if (out == file.length){
				out=0;
			}
		}
		else System.out.println ("File vide");
	}
	
	int getNbElt () {
		return nbelt;
	}
		
	public boolean equals (FiFo f){
		boolean egal = false;
		if (this.nbelt == f.nbelt && this.toString().equals(f.toString())){
			egal = true;
		}	
		return egal;
	}
	
	public String toString(){
		StringBuffer chaine = new StringBuffer();
		int out2 = this.out;
		for (int i = 0; i < this.nbelt; i++){
			if (out2 == this.file.length) {
				out2 = 0;
			}
			chaine = chaine.append(this.file[out2]);
			out2 ++;
		}
		return chaine.toString();
	}
}
